[CLSCompliantAttribute(false)]public int GetRowColumnCompressed(byte[] workBuffer,ushort[] runBuffer,int runBufferOffset,int row,int column,int width)
- (NSInteger)getRowColumnCompressed:(unsigned char *)workBufferrunBuffer:(unsigned short *)runBufferrow:(NSInteger)rowcolumn:(NSInteger)columnwidth:(NSUInteger)pixelserror:(NSError **)error
public int getRowColumnCompressed(byte[] workBuffer,short[] runBuffer,int runBufferOffset,int row,int column,int width)
[CLSCompliantAttribute(false)]public:int GetRowColumnCompressed(array<byte>^ workBuffer,array<ushort>^ runBuffer,int runBufferOffset,int row,int column,int width)
def GetRowColumnCompressed(self,workBuffer,runBuffer,runBufferOffset,row,column,width):
workBuffer
Optional work buffer. Allocating the work buffer speeds processing if you call this method more than once, because if you do not allocate a work buffer, the method allocates and frees a temporary buffer each time it is called. The size of this buffer should be the same as the BytesPerLine property. Pass a null reference to runBuffer if you do not want to use a work buffer.
runBuffer
The output buffer, which will be filled with 1-bit compressed image data. Calculate the required size of this buffer as follows: bytes required = (Width + 3) * 2.
runBufferOffset
Index into runBuffer where the get operation should start.
row
The number of the row to retrieve. The first row is 0, and the last row is 1 less than the image height.
column
The column offset within the row to retrieve. The first column offset is 0, and the last column offset is 1 less than the image width.
width
The number of pixels to retrieve.
The number of pixels processed.
This method is available in the (Document/Medical only).
This method is useful for working with 1-bit images that are loaded in their compressed formats for faster loading and display.
For more information, refer to Speeding Up 1-Bit Documents.
This example demonstrates the low-level methods for accessing 1-bit compressed bitmap data. It demonstrates the ability to get and set partial rows, and the ability to process partial rows in buffer-to-buffer processing. The result of the method is an inverted rectangle in the middle of the image.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Core;using Leadtools.ImageProcessing.Color;using Leadtools.Dicom;using Leadtools.Drawing;using Leadtools.Controls;using Leadtools.Svg;public void GetRowColumnCompressedExample(){RasterCodecs codecs = new RasterCodecs();// Load the bitmap, at 1 bit per pixel, compressedcodecs.Options.Load.Compressed = true;RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "OCR1.TIF"), 1, Leadtools.Codecs.CodecsLoadByteOrder.Bgr, 1, 1);int xOffset; // Column offset of the rectangle to process.int xSize; // Pixel width of the rectangle to process.int yOffset; // Row offset of the rectangle to process.int ySize; // Pixel height of the rectangle to process.int i, n; // Counters.byte[] buffer; // Buffer to hold the expanded row.ushort[] runBuffer; // Buffer to hold the compressed row.byte[] workBuffer; // Work buffer.// This example does not work with rotated view perspectives.if ((image.ViewPerspective != RasterViewPerspective.TopLeft) || (image.ViewPerspective != RasterViewPerspective.BottomLeft))image.ChangeViewPerspective(RasterViewPerspective.TopLeft);// Specify a rectangle in the middle right part of the displayed image.xOffset = image.Width / 3;xSize = image.Width - xOffset;yOffset = image.Height / 3;ySize = image.Height / 3;// Adjust the YOffset if the view perspective is bottom left.if (image.ViewPerspective == RasterViewPerspective.BottomLeft){yOffset = image.Height - yOffset - ySize;}if (image.IsGlobalMemory)image.Access();// Allocate the buffers.buffer = new Byte[(xSize + 7) / 8];runBuffer = new ushort[(xSize + 3) * 2];workBuffer = new Byte[image.BytesPerLine];// Invert the colors of pixels in the left half of the rectangle.// Notice that we get the whole rectangle, but process only half of it.for (i = yOffset; i < (yOffset + ySize); i++){image.GetRowColumnCompressed(workBuffer, runBuffer, 0, i, xOffset, xSize);RasterRleCompressor.ExpandRow(runBuffer, buffer, 0, 0, xSize);for (n = 0; n < (xSize / 16); n++)buffer[n] ^= 0xFF;RasterRleCompressor.CompressRow(runBuffer, buffer, 0, 0, xSize);image.SetRowColumnCompressed(workBuffer, runBuffer, 0, i, xOffset, xSize);}if (image.IsGlobalMemory)image.Release();codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "IMAGE1_getrowcolcompresed.BMP"), RasterImageFormat.Bmp, 0);image.Dispose();codecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
